package com.zsrt.java.day20161227.wrl.homework.demo04;

import java.util.Arrays;

import org.junit.Test;

public class FightTheLandlord {
	
	/**
	 * 斗地主  54  3x17   3张底牌
	 * 	玩家01	是什么
	 * 	玩家02	是什么
	 * 	玩家03	是什么
	 * 	3张底牌 	是什么
	 * 
	 * 已知：
	 * 	1.3位玩家
	 * 	2.共54张牌，每人17张牌，底牌3张
	 *  3.13个点数，每个点数4种花色 ，大 、小王
	 * 求：
	 * 	每人的牌是什么，底牌是什么
	 * 
	 * 分析：
	 * 	1 定义数组装好13个点数，
	 * 	2 定义数组装好4个花色
	 * 	3 定义数组装好大、小王
	 * 	4 把1.2组合上大小王组合成一副牌
	 *  5定义3个玩家数组、定义底牌数组
	 *  6 随机数确定抽取1.2组合或者王牌
	 *  7派牌： 3个玩家，每人17张牌,玩家每抽取一张牌后，纸牌长度-1，即从牌堆删去这张牌
	 */
	@Test
	public void fTL(){
		
		int zhipaiLength = 54;		//纸牌张数
		int perLength = 17;		//每人纸牌张数
		
		//1 定义数组装好13个点数，
		String[] dianshu = new String[13];
		for(int i=1;i<=10;i++){
			dianshu[i-1]=i+"";
		}
		dianshu[10] = "J";
		dianshu[11] = "Q";
		dianshu[12] = "K";
//		System.out.println(Arrays.toString(dianshu));
		
		//2 定义数组装好4个花色
		String[] huase = {"黑桃","红桃","梅花","方块"};
		
		//3 定义数组装好大、小王
		String[] zhipai = new String[zhipaiLength];
		
		//纸牌的index
		int index = 0;
		
		//4 把1.2组合上大小王组合成一副牌
		for(int i = 0;i<huase.length;i++){
			for(int j = 0;j<dianshu.length;j++){
				zhipai[index] = huase[i]+dianshu[j];
//				System.out.print(zhipai[index]+"  ");
				index++;
			}
		}
		zhipai[index] = "小王";
		zhipai[index+1] = "大王";
//		System.out.println(Arrays.toString(zhipai));
		
		//5 定义3个玩家数组、定义底牌数组
		String[]	dipai = new String[3];
		String[][] player = new String[3][perLength];
		
		//6 随机数确定抽取1.2组合或者王牌
		/*int num = 100;
		while(num>0){
			int ran = (int)(Math.random()*paiLength);
			System.out.println(ran);
			num--;
		}*/
		
		int temp = zhipaiLength;
		
		//7. 派牌： 3个玩家，每人17张牌
		for(int i = 0;i<3;i++){
			for(int j = 0;j<perLength;j++){
				int ran = (int)(Math.random()*temp);
				
				//玩家每抽取一张牌后，纸牌长度-1，即从牌堆删去这张牌
				temp--;
				player[i][j] = zhipai[ran];
				zhipai = delete(zhipai, zhipai[ran]);
			}
		}
		
		//剩下的3张是底牌
		dipai = zhipai;
		
		for(int i = 0;i<3;i++){
			System.out.print("玩家"+(i+1)+": ");
			for(String value : player[i]){
				System.out.print(value+ "  ");
			}
			System.out.println();
		}
		
		System.out.println("底牌是：\t"+Arrays.toString(dipai));
	}
	
	/**
	 * 删除一倍选择的纸牌
	 * @param zhipai
	 * @param perZhiPai
	 * @return
	 */
	public static String[] delete(String[] zhipai,String perZhiPai){
		int len	 = zhipai.length;
		String[] newArrays = new String[len-1];
		
		//获取被删除参数的下标
		int index = query(zhipai, perZhiPai);
		for(int i = 0;i<index;i++){
			newArrays[i] = zhipai[i];
		}
		for(int i = index; i < len-1; i++){
			newArrays[i] = zhipai[i+1];
		}
		return newArrays;
	}
	
	public static int query(String[] arrays, String search){
		
		//如果找不到，返回-1
		int index = -1;
		for(int i = 0;i<arrays.length;i++){
			if(search.equals(arrays[i])){
				index = i;
				//后面没有程序 ，注意写上break结束运行
				break;
			}
		}
		return index;
	}

}
